package com.nimitz.module.employee.service;

import com.nimitz.module.employee.domain.EmpEmployee;

import java.util.List;

/**
 * 人员 业务层接口
 */
public interface IEmpEmployeeService {

    /**
     * 新增人员
     *
     * @param employee 人员
     * @return 结果
     */
    int insertEmployee(EmpEmployee employee);

    /**
     * 批量删除人员
     *
     * @param updateBy    更新者
     * @param employeeIds 人员ID集合
     * @return 结果
     */
    int deleteEmployeeByIds(String updateBy, Integer[] employeeIds);

    /**
     * 修改人员
     *
     * @param employee 人员
     * @return 结果
     */
    int updateEmployee(EmpEmployee employee);

    /**
     * 根据人员ID查询人员
     *
     * @param employeeId 人员ID
     * @return 人员
     */
    EmpEmployee selectEmployeeById(Integer employeeId);

    /**
     * 根据条件查询人员列表（含分页）
     *
     * @param employee 人员
     * @return 人员集合
     */
    List<EmpEmployee> selectEmployeeList(EmpEmployee employee);

    /**
     * 批量提交
     *
     * @param updateBy    更新者
     * @param employeeIds 人员ID集合
     * @return 结果
     */
    int submitEmployee(String updateBy, Integer[] employeeIds);

    /**
     * 批量驳回
     *
     * @param updateBy    更新者
     * @param employeeIds 人员ID集合
     * @return 结果
     */
    int rejectEmployee(String updateBy, Integer[] employeeIds);

    /**
     * 批量审核
     *
     * @param updateBy     更新者
     * @param inductionIds 入职ID集合
     * @return 结果
     */
    int auditEmployee(String updateBy, Integer[] inductionIds);

    /**
     * 校验警号是否唯一
     *
     * @param employee 人员
     * @return 结果
     */
    boolean checkEmployeeCodeUnique(EmpEmployee employee);

    /**
     * 校验联系电话是否唯一
     *
     * @param employee 人员
     * @return 结果
     */
    boolean checkEmployeePhoneUnique(EmpEmployee employee);

    /**
     * 校验证件号码是否唯一
     *
     * @param employee 人员
     * @return 结果
     */
    boolean checkEmployeeIdCardUnique(EmpEmployee employee);
}
